{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第1章 统计学习方法概论"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1．统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行分析与预测的一门学科。统计学习包括监督学习、非监督学习、半监督学习和强化学习。\n",
    "\n",
    "2．统计学习方法三要素——模型、策略、算法，对理解统计学习方法起到提纲挈领的作用。\n",
    "\n",
    "3．本书主要讨论监督学习，监督学习可以概括如下：从给定有限的训练数据出发， 假设数据是独立同分布的，而且假设模型属于某个假设空间，应用某一评价准则，从假设空间中选取一个最优的模型，使它对已给训练数据及未知测试数据在给定评价标准意义下有最准确的预测。\n",
    "\n",
    "4．统计学习中，进行模型选择或者说提高学习的泛化能力是一个重要问题。如果只考虑减少训练误差，就可能产生过拟合现象。模型选择的方法有正则化与交叉验证。学习方法泛化能力的分析是统计学习理论研究的重要课题。\n",
    "\n",
    "5．分类问题、标注问题和回归问题都是监督学习的重要问题。本书中介绍的统计学习方法包括感知机、$k$近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与最大熵模型、支持向量机、提升方法、EM算法、隐马尔可夫模型和条件随机场。这些方法是主要的分类、标注以及回归方法。它们又可以归类为生成方法与判别方法。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用最小二乘法拟和曲线\n",
    "\n",
    "高斯于1823年在误差$e_1,…,e_n$独立同分布的假定下,证明了最小二乘方法的一个最优性质: 在所有无偏的线性估计类中,最小二乘方法是其中方差最小的！\n",
    "对于数据$(x_i, y_i)   (i=1, 2, 3...,m)$\n",
    "\n",
    "拟合出函数$h(x)$\n",
    "\n",
    "有误差，即残差：$r_i=h(x_i)-y_i$\n",
    "\n",
    "此时$L2$范数(残差平方和)最小时，$h(x)$ 和 $y$ 相似度最高，更拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "一般的$H(x)$为$n$次的多项式，$H(x)=w_0+w_1x+w_2x^2+...w_nx^n$\n",
    "\n",
    "$w(w_0,w_1,w_2,...,w_n)$为参数\n",
    "\n",
    "最小二乘法就是要找到一组 $w(w_0,w_1,w_2,...,w_n)$ ，使得$\\sum_{i=1}^n(h(x_i)-y_i)^2$ (残差平方和) 最小\n",
    "\n",
    "即，求 $min\\sum_{i=1}^n(h(x_i)-y_i)^2$\n",
    "\n",
    "----"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "举例：我们用目标函数$y=sin2{\\pi}x$, 加上一个正态分布的噪音干扰，用多项式去拟合【例1.1 11页】"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import scipy as sp\n",
    "from scipy.optimize import leastsq\n",
    "import matplotlib.pyplot as plt\n",
    "# %matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* ps: numpy.poly1d([1,2,3])  生成  $1x^2+2x^1+3x^0$*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.05793061, 0.44404342, 0.56070013, 0.22671465, 0.58514872,\n",
       "       0.38107586])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# np.linspace(10, 20, 11)\n",
    "# array([10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20.])\n",
    "# np.random.normal(0, 0.1)\n",
    "\n",
    "np.random.rand(5 + 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 目标函数\n",
    "def real_func(x):\n",
    "    return np.sin(2*np.pi*x)\n",
    "\n",
    "# 多项式\n",
    "def fit_func(p, x):\n",
    "    f = np.poly1d(p)\n",
    "    return f(x)\n",
    "\n",
    "# 残差\n",
    "def residuals_func(p, x, y):\n",
    "    ret = fit_func(p, x) - y\n",
    "    return ret"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 十个点\n",
    "x = np.linspace(0, 1, 10)\n",
    "x_points = np.linspace(0, 1, 1000)\n",
    "# 加上正态分布噪音的目标函数的值\n",
    "y_ = real_func(x)\n",
    "y = [np.random.normal(0, 0.1) + y1 for y1 in y_]\n",
    "\n",
    "\n",
    "def fitting(M=0):\n",
    "    \"\"\"\n",
    "    M    为 多项式的次数\n",
    "    \"\"\"\n",
    "    # 随机初始化多项式参数\n",
    "    p_init = np.random.rand(M + 1)\n",
    "    # 最小二乘法\n",
    "    p_lsq = leastsq(residuals_func, p_init, args=(x, y))\n",
    "    print('Fitting Parameters:', p_lsq[0])\n",
    "\n",
    "    # 可视化\n",
    "    plt.plot(x_points, real_func(x_points), label='real')\n",
    "    plt.plot(x_points, fit_func(p_lsq[0], x_points), label='fitted curve')\n",
    "    plt.plot(x, y, 'bo', label='noise')\n",
    "    plt.legend()\n",
    "    return p_lsq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 十个点\n",
    "x = np.linspace(0, 1, 10)\n",
    "x_points = np.linspace(0, 1, 1000)\n",
    "# 加上正态分布噪音的目标函数的值\n",
    "y_ = real_func(x)\n",
    "y = [np.random.normal(0, 0.1) + y1 for y1 in y_]\n",
    "\n",
    "\n",
    "def fitting(M=0):\n",
    "    \"\"\"\n",
    "    M    为 多项式的次数\n",
    "    \"\"\"\n",
    "    # 随机初始化多项式参数\n",
    "    p_init = np.random.rand(M + 1)\n",
    "    # 最小二乘法\n",
    "    p_lsq = leastsq(residuals_func, p_init, args=(x, y))\n",
    "    # print(p_lsq)\n",
    "    print('Fitting Parameters:', p_lsq[0])\n",
    "\n",
    "    # 可视化\n",
    "    plt.plot(x_points, real_func(x_points), label='real')\n",
    "    plt.plot(x_points, fit_func(p_lsq[0], x_points), label='fitted curve')\n",
    "    plt.plot(x, y, 'bo', label='noise')\n",
    "    plt.legend()\n",
    "    return p_lsq"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### M=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting Parameters: [-0.02008829]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# M=0\n",
    "p_lsq_0 = fitting(M=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### M=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting Parameters: [-1.27885944  0.61934143]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# M=1\n",
    "p_lsq_1 = fitting(M=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### M=3 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting Parameters: [ 22.394614   -33.35407177  11.22886794  -0.11955645]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# M=3\n",
    "p_lsq_3 = fitting(M=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  M=5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting Parameters: [-6.61962146e+01  1.68167986e+02 -1.27338860e+02  2.10618024e+01\n",
      "  4.44017173e+00 -3.46648320e-02]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# M=5\n",
    "p_lsq_3 = fitting(M=5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### M=9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting Parameters: [-1.21185726e+04  5.24982636e+04 -9.55320368e+04  9.49484265e+04\n",
      " -5.60965279e+04  2.00905973e+04 -4.23734512e+03  4.60905881e+02\n",
      " -1.35897745e+01 -4.40027073e-02]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# M=9\n",
    "p_lsq_9 = fitting(M=9)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当M=9时，多项式曲线通过了每个数据点，但是造成了过拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 正则化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果显示过拟合， 引入正则化项(regularizer)，降低过拟合\n",
    "\n",
    "$Q(x)=\\sum_{i=1}^n(h(x_i)-y_i)^2+\\lambda||w||^2$。\n",
    "\n",
    "回归问题中，损失函数是平方损失，正则化可以是参数向量的L2范数,也可以是L1范数。\n",
    "\n",
    "- L1: regularization\\*abs(p)\n",
    "\n",
    "- L2: 0.5 \\* regularization \\* np.square(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "regularization = 0.0001\n",
    "\n",
    "\n",
    "def residuals_func_regularization(p, x, y):\n",
    "    ret = fit_func(p, x) - y\n",
    "    ret = np.append(ret,\n",
    "                    np.sqrt(0.5 * regularization * np.square(p)))  # L2范数作为正则化项\n",
    "    return ret"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 最小二乘法,加正则化项\n",
    "p_init = np.random.rand(9 + 1)\n",
    "p_lsq_regularization = leastsq(\n",
    "    residuals_func_regularization, p_init, args=(x, y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x27d8e089808>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_points, real_func(x_points), label='real')\n",
    "plt.plot(x_points, fit_func(p_lsq_9[0], x_points), label='fitted curve')\n",
    "plt.plot(\n",
    "    x_points,\n",
    "    fit_func(p_lsq_regularization[0], x_points),\n",
    "    label='regularization')\n",
    "plt.plot(x, y, 'bo', label='noise')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----\n",
    "参考代码：https://github.com/wzyonggege/statistical-learning-method\n",
    "\n",
    "本文代码更新地址：https://github.com/fengdu78/lihang-code\n",
    "\n",
    "中文注释制作：机器学习初学者公众号：ID:ai-start-com\n",
    "\n",
    "配置环境：python 3.5+\n",
    "\n",
    "代码全部测试通过。\n",
    "![gongzhong](../gongzhong.jpg)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
